#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 25;
string s[N];
int used[N];
int g[N][N];
int n;
int res;
void dfs(string dragon, int u)
{
	res = max((int)dragon.size(), res);
	used[u]++;
	for (int i = 0; i < n; i++) {
		if (g[u][i] && used[i] < 2) {
			dfs(dragon + s[i].substr(g[u][i]), i);
		}
	}
	used[u]--;
}
int main()
{
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> s[i];
	}
	char start;
	cin >> start;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			for (int k = 1; k < min(s[i].size(), s[j].size()); k++) {
				if (s[i].substr(s[i].size() - k, k) == s[j].substr(0, k)) {
					g[i][j] = k;
					break;
				}
			}
		}
	}
	for (int i = 0; i < n; i++) {
		if (s[i][0] == start) {
			dfs(s[i], i);
		}
	}
	cout << res << endl;
	return 0;
}